//= require_self
$(document).ready(function() {
  window.customerTemplate = HandlebarsTemplates['orders/customer_details/autocomplete'];

  formatCustomerResult = function(customer) {
    return customerTemplate({
      customer: customer,
      bill_address: customer.bill_address,
      ship_address: customer.ship_address
    })
  }

  if ($("#customer_search").length > 0) {
    $("#customer_search").select2({
      placeholder: Spree.translations.choose_a_customer,
      ajax: {
        url: Spree.routes.users_api,
        params: { "headers": { "X-Spree-Token": Spree.api_key } },
        datatype: 'json',
        data: function(term, page) {
          return {
            q: {
              m: 'or',
              email_start: term,
              addresses_firstname_start: term,
              addresses_lastname_start: term
            }
          }
        },
        results: function(data, page) {
          return {
            results: data.users,
            more: data.current_page < data.pages
          }
        }
      },
      dropdownCssClass: 'customer_search',
      formatResult: formatCustomerResult,
      formatSelection: function (customer) {
        return Select2.util.escapeMarkup(customer.email);
      }
    })

    $("#customer_search").on("select2-selecting", function(e) {
      var customer = e.choice;
      $('#order_email').val(customer.email);
      $('#user_id').val(customer.id);
      $('#guest_checkout_true').prop("checked", false);
      $('#guest_checkout_false').prop("checked", true);
      $('#guest_checkout_false').prop("disabled", false);

      var billAddress = customer.bill_address;
      if (billAddress) {
        $('#order_bill_address_attributes_firstname').val(billAddress.firstname);
        $('#order_bill_address_attributes_lastname').val(billAddress.lastname);
        $('#order_bill_address_attributes_address1').val(billAddress.address1);
        $('#order_bill_address_attributes_address2').val(billAddress.address2);
        $('#order_bill_address_attributes_city').val(billAddress.city);
        $('#order_bill_address_attributes_zipcode').val(billAddress.zipcode);
        $('#order_bill_address_attributes_phone').val(billAddress.phone);

        $('#order_bill_address_attributes_country_id').select2("val", billAddress.country_id).promise().done(function () {
          update_state('b', function () {
            $('#order_bill_address_attributes_state_id').select2("val", billAddress.state_id);
          });
        });
      }
    });
  }

  var order_use_billing_input = $('input#order_use_billing');

  var order_use_billing = function () {
    if (!order_use_billing_input.is(':checked')) {
      $('#shipping').show();
    } else {
      $('#shipping').hide();
    }
  };

  order_use_billing_input.click(function() {
    order_use_billing();
  });

  order_use_billing();

  $('#guest_checkout_true').change(function() {
    $('#customer_search').val("");
    $('#user_id').val("");
    $('#checkout_email').val("");

    var fields = ["firstname", "lastname", "company", "address1", "address2",
              "city", "zipcode", "state_id", "country_id", "phone"]
    $.each(fields, function(i, field) {
      $('#order_bill_address_attributes' + field).val("");
      $('#order_ship_address_attributes' + field).val("");
    })
  });
});
